ELF文件程序表头和代码实现ELF文件加载 您所在的位置:网站首页 elf文件 打开和修改 ELF文件程序表头和代码实现ELF文件加载

ELF文件程序表头和代码实现ELF文件加载

2022-10-04 23:10| 来源: 网络整理| 查看: 265

前面章节我们了解了ELF文件的头部结构,这次我们深入了解另一个非常重要的数据结构,那就是程序表头。操作系统严重依赖该结构来加载ELF文件或是实现动态链接。程序表头反映的是当ELF加载到内存后所形成的“视图”或结构,也就是说ELF文件存在硬盘上或者被加载到内存,它展现出来的形态不一致。

我们先看程序表头的数据结构:

typedef struct { unit32_t p_type; #数据类型 uint332_t p_flags; #标志位 uint64_t p_offset; #在ELF文件中的偏移 uint64_t p_vaddr; #虚拟地址 uint64_t p_paddr; #物理地址 uint64_t p_fllesz; #在硬盘上的大小 uint64_t p_memsz; #在内存中大小 uint64_t p_align; #内存对齐方式 } Elf64_Phdr;

使用命令 readelf --wide --segments a.out可以读取程序表头内容信息:

在这里插入图片描述 这里需要注意的是,程序表头其实没有什么新意,它其实应前面说过的若干个段所形成的集合。接下来我们看每个字段的含义。

p_type对应表头的类型,常用的数值有PT_LOAD, PT_DYNAMIC, PT_INTER。如果取值PT_LOAD,意味着表头对应的段需要加装到内存中



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有